RAIS  3.2
C:/Projekte/RAIS/common/QueryParameter.cs
Go to the documentation of this file.
00001 
00028 using System;
00029 using System.Collections.Generic;
00030 using System.Data;
00031 using System.Text;
00032 
00033 using QueryParameterTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.QueryParameter.QueryParameterTypeData>;
00034 //using QueryParameterTypes = System.Collections.Generic.Dictionary<RAIS.Common.TableManagement.QueryParameter.QueryParameterType, RAIS.Common.TableManagement.QueryParameter.QueryParameterTypeData>;
00035 
00036 namespace RAIS.Common.TableManagement
00037 {
00038         public class QueryParameter: DBObject
00039         {
00040                 //*********************************************************************
00041                 #region Enumerators
00042                 public enum QueryParameterType
00043                 {
00044                         Unknown,
00045                         Lookup,
00046                         LookupFromTable,
00047                         LookupFromQuery,
00048                         DatesRangeStartDate,
00049                         DatesRangeEndDate,
00050                         PrimaryKey,
00051                         Text,
00052                         Integer,
00053                         Rational,
00054                         Date,
00055                         PreselectedFacility,
00056                         PreselectedDepartment,
00057                         UserID,
00058                         Xml
00059                 }
00060                 #endregion
00061                 //*********************************************************************
00062                 #region Fields
00063                 static QueryParameterTypes queryParameterTypesDictionary;
00064 
00065                 string visibleName;
00066                 QueryParameterType type = QueryParameterType.Unknown;
00067                 Table table;
00068                 Query relatedQuery;
00069                 int order;
00070                 #endregion
00071                 //*********************************************************************
00072                 #region Properties
00073                 public static QueryParameterTypes QueryParameterTypesDictionary
00074                 {
00075                         get { return QueryParameter.queryParameterTypesDictionary; }
00076                         set { QueryParameter.queryParameterTypesDictionary = value; }
00077                 }
00078 
00079                 public string VisibleName
00080                 {
00081                         get { return this.visibleName; }
00082                         set { this.visibleName = value; }
00083                 }
00084                 public QueryParameterType Type
00085                 {
00086                         get { return this.type; }
00087                         set { this.type = value; }
00088                 }
00089                 public QueryParameterTypeData TypeData
00090                 {
00091                         get { return queryParameterTypesDictionary[this.TypeText]; }
00092                 }
00093                 public string TypeText
00094                 {
00095                         get
00096                         {
00097                                 string result = string.Empty;
00098                                 foreach (KeyValuePair<string, QueryParameterTypeData> queryParameterTypeItem in queryParameterTypesDictionary)
00099                                         if (queryParameterTypeItem.Value.Type == this.type)
00100                                         {
00101                                                 result = queryParameterTypeItem.Value.VisibleName;
00102                                                 break;
00103                                         }
00104                                 return result;
00105                         }
00106                         set
00107                         {
00108                                 this.type = queryParameterTypesDictionary[value].Type;
00109                         }
00110                 }
00111                 public Table Table
00112                 {
00113                         get { return this.table; }
00114                         set { this.table = value; }
00115                 }
00116                 public Query RelatedQuery
00117                 {
00118                         get { return this.relatedQuery; }
00119                         set { this.relatedQuery = value; }
00120                 }
00121                 public int Order
00122                 {
00123                         get { return this.order; }
00124                         set { this.order = value; }
00125                 }
00126                 public string DBObjectName
00127                 {
00128                         get
00129                         {
00130                                 string name = string.Empty;
00131                                 if (this.relatedQuery != null)
00132                                 {
00133                                         name = this.relatedQuery.Name;
00134                                 }
00135                                 else
00136                                 {
00137                                         if (this.table != null)
00138                                                 name = this.table.Name;
00139                                 }
00140                                 return name;
00141                         }
00142                 }
00143                 #endregion
00144 
00145                 //*********************************************************************
00146                 #region Constructors
00147                 public QueryParameter()
00148                 { }
00149 
00150                 public QueryParameter(IDataRecord record)
00151                 {
00152                         this.id = (int)record["PK Query Parameter ID"];
00153                         this.name = record["Query Parameter Name"].ToString();
00154                         this.type = (QueryParameterType)Enum.Parse(typeof(QueryParameterType), record["Query Parameter Type Name"].ToString());
00155                         if (!(record["FK Table ID"] is DBNull))
00156                         {
00157                                 this.table = new Table();
00158                                 this.table.ID = (int)record["FK Table ID"];
00159                         }
00160                         if (!(record["FK Related Query ID"] is DBNull))
00161                         {
00162                                 this.relatedQuery = new Query();
00163                                 this.relatedQuery.ID = (int)record["FK Related Query ID"];
00164                         }
00165                         this.order = (int)record["Order"];
00166                         this.visibleName = record["Visible Name"].ToString();
00167                 }
00168                 #endregion 
00169                 //*********************************************************************
00170                 #region Nested classes
00171                 public class QueryParameterTypeData : DBTypeObject
00172                 {
00173                         //*********************************************************************
00174                         #region Properties
00175                         public QueryParameterType Type
00176                         {
00177                                 get { return (QueryParameterType)Enum.Parse(typeof(QueryParameterType), this.name); }
00178                         }
00179                         public bool ParameterTypeForFilters
00180                         {
00181                                 get
00182                                 {
00183                                         bool parameterForFilters = false;
00184                                         if (this.Type == QueryParameterType.Unknown
00185                                                 // The possibility to use just table (not query) for filter has not implemented yet
00186                                                 // that's why LookupFromTable parameter type is commented
00187                                                 //|| this.Type == QueryParameterType.LookupFromTable
00188                                                 || this.Type == QueryParameterType.LookupFromQuery
00189                                                 || this.Type == QueryParameterType.DatesRangeStartDate
00190                                                 || this.Type == QueryParameterType.DatesRangeEndDate
00191                                                 || this.Type == QueryParameterType.PreselectedFacility
00192                                                 || this.Type == QueryParameterType.PreselectedDepartment
00193                                                 || this.Type == QueryParameterType.UserID
00194                                         )
00195                                         {
00196                                                 parameterForFilters = true;
00197                                         }
00198                                         return parameterForFilters;
00199                                 }
00200                         }
00201                         public bool ParameterTypeForOthers
00202                         {
00203                                 get
00204                                 {
00205                                         bool parameterForOthers = false;
00206                                         if (this.Type == QueryParameterType.Unknown
00207                                                 || this.Type == QueryParameterType.Date
00208                                                 || this.Type == QueryParameterType.Integer
00209                                                 || this.Type == QueryParameterType.Lookup
00210                                                 || this.Type == QueryParameterType.PrimaryKey
00211                                                 || this.Type == QueryParameterType.Rational
00212                                                 || this.Type == QueryParameterType.Text
00213                                                 || this.Type == QueryParameterType.UserID
00214                                                 || this.Type == QueryParameterType.Xml
00215                                         )
00216                                         {
00217                                                 parameterForOthers = true;
00218                                         }
00219                                         return parameterForOthers;
00220                                 }
00221                         }
00222                         #endregion
00223                         //*********************************************************************
00224                         #region Constructors
00225                         public QueryParameterTypeData()
00226                         { }
00227 
00228                         public QueryParameterTypeData(IDataRecord record)
00229                         {
00230                                 this.id = (int)record["PK Query Parameter Type ID"];
00231                                 this.name = record["Query Parameter Type Name"].ToString();
00232                                 this.visibleName = record["Query Parameter Type Visible Name"].ToString();
00233                         }
00234                         #endregion
00235                 }
00236                 #endregion
00237         }
00238 }